#include<bits/stdc++.h>
using namespace std;
const int N=1e5+7;
int n;
vector<int>e[N];
multiset<int>vl[N];
void dfs(int x,int y){
    int mx=-1,sn=-1;
    for(auto v:e[x])
        if(v!=y){
            dfs(v,x);
            if((int)vl[v].size()>=mx){
                mx=(int)vl[v].size();
                sn=v;
            }
        }
    if(mx==-1){
        vl[x].insert(-1);
    }else{
        swap(vl[x],vl[sn]);
        for(auto v:e[x])
            if(v!=y&&v!=sn){
                for(auto g:vl[v])
                    vl[x].insert(g);
            }
        if((int)vl[x].size()>=2){
            multiset<int>::iterator o=vl[x].begin();
            int xx=(*o);o++;
            int yy=(*o);
            if(xx%2==0&&yy%2==0){
                vl[x].erase(vl[x].find(xx));
                if(vl[x].count(yy+1)){
                    vl[x].erase(vl[x].find(yy+1));
                }else{
                    vl[x].erase(vl[x].find(yy));
                    vl[x].insert(-1);
                }
                vl[x].insert(xx+yy);
            }else{
                vl[x].erase(vl[x].find(xx));
                vl[x].erase(vl[x].find(yy));
                vl[x].insert(xx+yy-1);
            }
        }else{
            int u=(*vl[x].begin());
            vl[x].erase(u);
            vl[x].insert(u-1);
        }
    }
    return;
}
signed main(){
    freopen("bird.in","r",stdin);
    freopen("bird.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin>>n;
    for(int i=1;i<n;i++){
        int u,v;
        cin>>u>>v;
        e[u].push_back(v);
        e[v].push_back(u);
    }
    dfs(1,0);
    cout<<-(*vl[1].begin())<<"\n";
    return 0;
}
